package freehorizons.core;

/**
 * This is used to represent a particular attribute for a hiker, a piece of
 * equipment, or something in the environment. These are presented as classes
 * because many attributes will be calculated, rather than static values.
 * 
 * Using classes allows various constraints to be enforced on attributes, which
 * is extremely useful.
 */
public interface Attribute
{

	/**
	 * Returns a name for this attribute.
	 * 
	 * @return
	 */
	public String getName( );

	/**
	 * Returns an internal name for this attribute. This tag is intended to be
	 * used internally when referencing this attribute and should not change when
	 * used in different locales.
	 * 
	 * @return a locale-independent tag for this attribute.
	 */
	public String getTag( );

	public double getValue( );

	public void setValue( double value );

}
